/**
 * 融资申请数据访问层 - 融资申请的数据库操作接口
 *
 * 开发人员：陈宏伟
 * 开发时间：2025-10-25 至 2025-10-30
 * 模块职责：定义融资申请的数据库查询方法，支持多租户数据隔离和状态管理查询
 *
 * 技术要点：
 * - Spring Data JPA查询方法定义
 * - 多租户数据隔离查询设计
 * - 融资状态管理查询支持
 * - 自定义JPQL查询处理复杂业务逻辑
 * - 索引优化和查询性能考虑
 *
 * 开发故事：负责融资申请Repository的设计和实现，与融资服务层深度配合，提供高效的数据访问能力和融资流程支持。
 */
package com.pbl.repository;

import com.pbl.entity.FinancingRequest;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;

import java.util.List;

/**
 * 融资申请数据访问接口 - 提供融资申请的CRUD操作和状态查询功能
 */
public interface FinancingRequestRepository extends JpaRepository<FinancingRequest, Long> {
    
    /**
     * 企业融资申请列表 - 使用自定义查询避免类型转换问题
     */
    @Query("SELECT f FROM FinancingRequest f WHERE f.enterprise.id = ?1 ORDER BY f.createdAt DESC")
    List<FinancingRequest> findByEnterpriseId(Long enterpriseId);
    
    /**
     * 企业指定状态融资申请列表 - 使用自定义查询避免类型转换问题
     */
    @Query("SELECT f FROM FinancingRequest f WHERE f.enterprise.id = ?1 AND f.status = ?2 ORDER BY f.createdAt DESC")
    List<FinancingRequest> findByEnterpriseIdAndStatus(Long enterpriseId, String status);
}
